package com.yuncheng.spcyApi.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuncheng.spcyApi.constant.jcy.JcyPrdjConstant;
import com.yuncheng.spcyApi.entity.SpcyJcyJprymd;
import com.yuncheng.spcyApi.mapper.SpcyJcyJprymdMapper;
import com.yuncheng.spcyApi.service.ISpcyJcyJprymdService;
import com.yuncheng.spcyApi.utils.OrderItemUtils;
import com.yuncheng.spcyApi.utils.StringPatternUtils;
import com.yuncheng.spcyApi.vo.common.OrderItemVo;
import com.yuncheng.spcyApi.vo.common.PageVo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;

import com.yuncheng.common.base.service.impl.BaseServiceImpl;

import java.util.List;

/**
 * @Description: 检查员-解聘人员名单
 * @Author: yuncheng
 * @Date: 2024-01-16
 * @Version: V1.0
 */
@Service
public class SpcyJcyJprymdServiceImpl extends BaseServiceImpl<SpcyJcyJprymdMapper, SpcyJcyJprymd> implements ISpcyJcyJprymdService {

    @Override
    public Page<SpcyJcyJprymd> pageList(SpcyJcyJprymd query, String gjz, PageVo pageVo, OrderItemVo orderItemVo) {
        Page<SpcyJcyJprymd> page = new Page<>(pageVo.getPageNo(), pageVo.getPageSize());


        LambdaQueryWrapper<SpcyJcyJprymd> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.like(StringUtils.isNotBlank(query.getFjcyxl()), SpcyJcyJprymd::getFjcyxl, query.getFjcyxl());
        queryWrapper.like(StringUtils.isNotBlank(query.getRealname()), SpcyJcyJprymd::getRealname, query.getRealname());
        queryWrapper.like(StringUtils.isNotBlank(query.getFgzdw()), SpcyJcyJprymd::getFgzdw, query.getFgzdw());
        queryWrapper.like(StringUtils.isNotBlank(query.getFsfzh()), SpcyJcyJprymd::getFsfzh, query.getFsfzh());
        queryWrapper.eq(StringUtils.isNotBlank(query.getFjpzt()), SpcyJcyJprymd::getFjpzt, query.getFjpzt());
        queryWrapper.eq(StringUtils.isNotBlank(query.getFjpjbxxid()), SpcyJcyJprymd::getFjpjbxxid, query.getFjpjbxxid());
        queryWrapper.like(StringUtils.isNotBlank(query.getFjpwh()), SpcyJcyJprymd::getFjpwh, query.getFjpwh());

        if (StringUtils.isNotBlank(gjz)){

            int selectSex = 3;
            if (gjz.contains("男")){
                selectSex = 1;
            }else if (gjz.contains("女")){
                selectSex = 2;
            }

            Integer finalSelectSex = selectSex;
            queryWrapper
                    .and(f->f.like(SpcyJcyJprymd::getRealname, gjz)
                            .or()
                            .like(SpcyJcyJprymd::getFgzdw, gjz)
                            .or()
                            .like(SpcyJcyJprymd::getFsfzh, gjz)
                            .or()
                            .like(SpcyJcyJprymd::getFjcyxl, gjz)
                            .or()
                            .like(SpcyJcyJprymd::getFjpwh, gjz)
                            .or()
                            .eq(SpcyJcyJprymd::getSex, finalSelectSex)
                    );
        }

        if (StringUtils.isBlank(orderItemVo.getOrderItem())){
            queryWrapper.orderByDesc(SpcyJcyJprymd::getCreateTime);
        }else {
            OrderItemUtils.setOrderItem(queryWrapper, orderItemVo);
        }
        return page(page, queryWrapper);
    }

    @Override
    public List<SpcyJcyJprymd> selectMdList(String fjpjbxxid, String gjz, String ids) {
        if (StringUtils.isBlank(ids)) {
            LambdaQueryWrapper<SpcyJcyJprymd> queryWrapper = new LambdaQueryWrapper<>();
            if (StringUtils.isBlank(fjpjbxxid)) {
                queryWrapper.eq(SpcyJcyJprymd::getFjpzt, JcyPrdjConstant.JP_JPZT_DJP);
            } else {
                queryWrapper.eq(SpcyJcyJprymd::getFjpjbxxid, fjpjbxxid);
            }

            if (StringUtils.isNotBlank(gjz)) {

                int selectSex = 3;
                if (gjz.contains("男")) {
                    selectSex = 1;
                } else if (gjz.contains("女")) {
                    selectSex = 2;
                }

                Integer finalSelectSex = selectSex;
                queryWrapper
                        .and(f -> f.like(SpcyJcyJprymd::getRealname, gjz)
                                .or()
                                .like(SpcyJcyJprymd::getFgzdw, gjz)
                                .or()
                                .like(SpcyJcyJprymd::getFsfzh, gjz)
                                .or()
                                .like(SpcyJcyJprymd::getFjcyxl, gjz)
                                .or()
                                .like(SpcyJcyJprymd::getFjpwh, gjz)
                                .or()
                                .eq(SpcyJcyJprymd::getSex, finalSelectSex)
                        );
            }

            queryWrapper.orderByDesc(SpcyJcyJprymd::getCreateTime);

            return list(queryWrapper);

        }else {

            return listByIds(StringPatternUtils.getListByIds(ids));
        }
    }
}
